#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include "personnel.h"


/*********************************************************************************************************************************************/
/*Fonction pour saisir les champs d'un personnel*/
/*********************************************************************************************************************************************/

void saisir_personnel(personnel *p)
{
	printf("\n\t\t\t\t\tDonnez le nom du personnel:");fflush(stdin);
	scanf("%s",p->nom);
	printf("\n\t\t\t\t\tDonnez le prenom du personnel:");fflush(stdin);
	scanf("%s",p->prenom);
	printf("\n\t\t\t\t\tDonnez le cin du personnel:");
	scanf("%d",&(p->cin));
	printf("\n\t\t\t\t\tDonnez l\'adresse mail du personnel:");fflush(stdin);
	scanf("%s",p->mail);
	printf("\n\t\t\t\t\tDonnez le numero du telephone du personnel:");
	scanf("%d",&(p->telephone));
	printf("\n\t\t\t\t\tDonnez le statut du personnel:");fflush(stdin);
	scanf("%s",p->statut);
	printf("\n\t\t\t\t\tDonnez la photo du personnel:");fflush(stdin);
	scanf("%s",p->photo);
	printf("\n\t\t\t\t\tDonnez la date du naissance du personnel:");
	scanf("%d %d %d",&(p->date_naissance.jour),&(p->date_naissance.mois),&(p->date_naissance.annee));

}

/*********************************************************************************************************************************************/
/*Fonction pour enregistrer les champ pré-saisi d'un personnel*/
/*********************************************************************************************************************************************/

void Enregistrer_personnel(char fichier_personnel[],personnel *p,char fichier_matricule[])
{
FILE *m; 
FILE *f;
int i ;
char ch[20];

	
f = fopen(fichier_personnel, "ab");
    
 if (f!=NULL)
	
	{  	m=fopen(fichier_matricule,"r");

     
		 if (m!=NULL)
		 {	fscanf(m,"%s",ch);
			i=atoi(ch);
		  	strcpy(p->matricule,ch); 
			i++;
	
		 }
		fclose(m);

		m=fopen(fichier_matricule,"w");
		      if (m!=NULL)
		 {
			fprintf(m,"%d",i);
		 }
		fclose(m);
				               
			  saisir_personnel(p);
			  fwrite(p,sizeof(personnel),1,f);
	
	}

 else

	printf("Erreur d'ouverture");


fclose(f);
}


/*********************************************************************************************************************************************/
/*Fonction pour afficher la liste des personnels*/
/*********************************************************************************************************************************************/

void afficher_personnels(char fichier_personnel[])
{
personnel p; 
int i=0;

FILE *f;
  	
f = fopen(fichier_personnel, "rb");

    if (f!=NULL)

	{ 
	  
		while(fread(&p,sizeof(personnel),1,f)!=0)
			{
				i++;
				printf("\n Personnel %d  :\n Nom: %s \n Prenom: %s \n CIN: %d \n Matricule: %s \n Mail: %s \n Telephone: %d \n Statut: %s \n Photo: %s \n Date de naissance:  %d /%d/ %d \n ",i,p.nom,p.prenom,p.cin,p.matricule,p.mail,p.telephone,p.statut,p.photo,p.date_naissance.jour,p.date_naissance.mois,p.date_naissance.annee);
			}
	}

	else

	printf("Erreur d'ouverture");

fclose(f);
}

/*********************************************************************************************************************************************/
/*Fonction pour chercher un personnel grace a sa matricule*/
/*********************************************************************************************************************************************/

int  rechercher_personnel(char fichier_personnel[], char nom [],int cin,char matricule[]) 
{
 personnel p ; 
 char nom_cherche[10];
 int CIN_cherche;
char matricule_cherche[10];
 int exist=0;
 int choix;
 int Quit=0;
 FILE *f;
do
{
printf("*******************Menu recherche******************\n");
printf("***********1-recherche avec CIN********************\n");
printf("***********2-recherche avec nom********************\n");
printf("***********3-recherche avec matricule**************\n");
printf("      ***0-retour au menu princiapl***  \n");
printf("**************************************************\n");
printf("veuillez saisir votre choix svp \n");
scanf("%d",&choix);
  while ((choix<0)||(choix>3));
{ switch (choix)
    {case 1 : 
	{ f=fopen(fichier_personnel, "rb");

 		printf ("\n\t\t\t\t\tdonner le num de CIN du personnel :\n") ; 
 		scanf("%d",&CIN_cherche);

 		if (f!=NULL)
		 {
	  
	  			while(fread(&p,sizeof(personnel),1,f)!=0 && exist!=1)
 
            			 { 
	      				if (CIN_cherche==p.cin)
		         		 {
						exist=1;
			 		 }

            			 } 
  				if (exist==1)
				 {
					printf("\n\t\t\t\t\tle personnel recherche existe \n");
					printf("Nom:%s\n Prenom:%s\n Matricule:%s\n Mail:%s\n CIN:%d\n Telephone:%d\n Statut: %s \n Date:%d/%d/%d \n Photo:%s \n ",p.nom,p.prenom,p.matricule,p.mail,p.cin,p.telephone,p.statut,p.date_naissance.jour,p.date_naissance.mois,p.date_naissance.annee,p.photo);
				 }
				else printf("le personnel recherche n'existe pas \n");
	       }

fclose(f);
} break;
    case 2 : 
	{ f=fopen(fichier_personnel, "rb");

 		printf ("\n\t\t\t\t\tdonner le nom du personnel  :\n") ; fflush(stdin);
 		scanf("%s",nom_cherche);

 		if (f!=NULL)
		 {
	  
	  			while(fread(&p,sizeof(personnel),1,f)!=0 && exist!=1)
 
            			 { 
	      				if (strcmp(nom_cherche,p.nom)==0)
		         		 {
						exist=1;
			 		 }

            			 } 
  				if (exist==1)
				 {
					printf("\n\t\t\t\t\tle personnel recherche existe \n");
					printf("Nom:%s\n Prenom:%s\n Matricule:%s\n Mail:%s\n CIN:%d\n Telephone:%d\n Statut: %s \n Date:%d/%d/%d \n Photo:%s \n ",p.nom,p.prenom,p.matricule,p.mail,p.cin,p.telephone,p.statut,p.date_naissance.jour,p.date_naissance.mois,p.date_naissance.annee,p.photo);
				 }
				else printf("le personnel recherche n'existe pas \n");
	       }

fclose(f);
} break;
    case 3 : 
	{ f=fopen(fichier_personnel, "rb");

 		printf ("\n\t\t\t\t\tdonner la matricule du personnel  :\n") ; fflush(stdin);
 		scanf("%s",matricule_cherche);

 		if (f!=NULL)
		 {
	  
	  			while(fread(&p,sizeof(personnel),1,f)!=0 && exist!=1)
 
            			 { 
	      				if (strcmp(matricule_cherche,p.matricule)==0)
		         		 {
						exist=1;
			 		 }

            			 } 
  				if (exist==1)
				 {
					printf("\n\t\t\t\t\tle personnel recherche existe \n");
					printf("Nom:%s\n Prenom:%s\n Matricule:%s\n Mail:%s\n CIN:%d\n Telephone:%d\n Statut: %s \n Date:%d/%d/%d \n Photo:%s \n ",p.nom,p.prenom,p.matricule,p.mail,p.cin,p.telephone,p.statut,p.date_naissance.jour,p.date_naissance.mois,p.date_naissance.annee,p.photo);
				 }
				else printf("le personnel recherche n'existe pas \n");
	       }

fclose(f);
} break;
    case 0 : { printf("merci");
		Quit=1;} break;
   default: printf("\nmauvais choix");
			break;
    }
} }
while (Quit==0);
return(exist);
}

/*********************************************************************************************************************************************/
/*Fonction pour modifier les champs d'un personnel*/
/*********************************************************************************************************************************************/

void modifier_personnel(char fichier_personnel[])
{
	personnel p; 
	int exist;
	FILE *f;
	char nom[20];
	int cin;
	char matricule[20];
	

 
	 exist= rechercher_personnel(fichier_personnel, nom ,cin,matricule);

	 if (exist==1)
		 {
		  saisir_personnel(&p);
		 }

}


/*********************************************************************************************************************************************/
/*Fonction pour archiver les champs d'un personnel*/
/*********************************************************************************************************************************************/

void archiver_personnel(char fichier_personnel[],char archive_personnel[])
{
	int i;
        personnel p,per; 

	FILE *f1,*f2,*f3;
	char matricule_cherche[20];
	

	printf ("\n\t\t\t\t\tdonner la matricule\n") ; fflush(stdin);
 	
 	scanf("%s",matricule_cherche);

	f1=fopen(fichier_personnel,"rb");
	f2=fopen("tmp1.txt","ab");
	f3=fopen(archive_personnel, "ab");


if ((f1!=NULL) && (f2!=NULL) && (f3!=NULL))
{
	  
	  while(fread(&p,sizeof(personnel),1,f1)!=0)

            { 
		if (strcmp(matricule_cherche,p.matricule)!=0)
		         {
				
				fwrite(&p,sizeof(personnel),1,f2);	
			 }
                else    {
				
				fwrite(&p,sizeof(personnel),1,f3);						
			}
		
	 } 
  
}
fclose(f1);
fclose(f2);
fclose(f3);

printf("\n****************************\n");
printf("\nListe des personnels archivés:\n");
printf("\n****************************\n");
afficher_personnels(archive_personnel);

remove(fichier_personnel);

f1=fopen(fichier_personnel, "ab");
f2=fopen("tmp1.txt", "rb");

if ((f2!=NULL)&&(f1!=NULL))
{
	  
	while(fread(&per,sizeof(personnel),1,f2)!=0)

        { 
		if (strcmp(matricule_cherche,per.matricule)!=0){  
				
			fwrite(&per,sizeof(personnel),1,f1);	
		}
		
	} 
  
}
fclose(f1);
fclose(f2);

printf("\n*******************\n");
printf("\nListe des personnels:\n");
printf("\n*******************\n");
afficher_personnels(fichier_personnel);
remove("tmp1.txt");

}

	


